#!/bin/bash

# 执行定位方案脚本

echo "=== 执行定位方案 ==="

# 进入modb目录
cd /home/apachee/trunk/Crystal/CrystalFlowAnalyzer/modb

# 设置环境变量
export PROJ_ROOT=/home/apachee/trunk/Crystal/CrystalFlowAnalyzer/a9soc

echo "1. 环境变量设置检查"
echo "PROJ_ROOT = $PROJ_ROOT"

# 验证环境变量
if [ -z "$PROJ_ROOT" ]; then
    echo "错误: PROJ_ROOT 环境变量未设置"
    exit 1
fi

echo "✓ 环境变量设置正确"

echo "2. 路径验证"
# 验证关键路径是否存在
if [ ! -d "$PROJ_ROOT/design/usb2/src" ]; then
    echo "错误: 路径 $PROJ_ROOT/design/usb2/src 不存在"
    exit 1
fi

if [ ! -d "$PROJ_ROOT/design/usb2/src/lsp" ]; then
    echo "错误: 路径 $PROJ_ROOT/design/usb2/src/lsp 不存在"
    exit 1
fi

echo "✓ 路径验证通过"

echo "3. 文件列表检查"
FILELIST="/home/apachee/trunk/Crystal/CrystalFlowAnalyzer/a9soc/design/usb2/src/DWC_usb3.lst"
if [ ! -f "$FILELIST" ]; then
    echo "错误: 文件列表 $FILELIST 不存在"
    exit 1
fi

echo "✓ 文件列表存在"

echo "4. 创建最小测试列表"
# 创建只包含一个简单文件的测试列表
echo '$PROJ_ROOT/design/usb2/src/lsp/usb2_DWC_usb3_lsp_nsr.v' > single_test.list

echo "测试列表内容:"
cat single_test.list

echo "5. 验证目标文件"
# 解析环境变量并检查文件
RESOLVED_FILE="$PROJ_ROOT/design/usb2/src/lsp/usb2_DWC_usb3_lsp_nsr.v"
echo "解析后的文件路径: $RESOLVED_FILE"

if [ -f "$RESOLVED_FILE" ]; then
    echo "✓ 文件存在"
    echo "文件大小: $(ls -la "$RESOLVED_FILE" | awk '{print $5}') 字节"
else
    echo "✗ 文件不存在"
    exit 1
fi

echo "6. 执行最小测试"
echo "运行命令: ./moparse -f single_test.list -o single_test.modb"

# 执行测试并捕获输出
./moparse -f single_test.list -o single_test.modb 2>&1

# 检查执行结果
if [ $? -eq 0 ]; then
    echo "✓ 命令执行成功"
    
    if [ -f "single_test.modb" ]; then
        echo "✓ 成功生成modb文件"
        echo "生成的文件信息:"
        ls -la single_test.modb
        
        echo "模块信息:"
        ./moparse -s single_test.modb
    else
        echo "✗ 未生成modb文件"
    fi
else
    echo "✗ 命令执行失败"
fi

echo "7. 清理测试文件"
rm -f single_test.list single_test.modb

echo "=== 定位方案执行完成 ==="